//日期类
public class Data {
    public int year;
    public int month;
    public int day;

//    public void setDate(int y,int m,int d) {
//        this.year = y;
//        this.month = m;
//        this.day = d;
//    }

    //这里的year,month,day不管是“=”前面还是后面都相当于是形参设定的局部变量，而不是Data类里的成员变量了-->局部变量优先原则
    //所以相当于并没有给data类的成员变量进行赋值，所以data里的成员变量仍然是默认值
    //解决方法一:形参不要和类里面的成员变量设置成相同名字
    //解决方法二:如果设置成相同名字可以用this引用来区分类内的成员变量
    //this代表当前创建出来的对象的引用-->建议大家习惯使用this,哪怕是不同变量名，因为这样更好区分成员变量
    //哪个引用变量调用了这个方法，this就表示哪个引用变量(this保存的就是指向这个对象的地址，和引用变量的值是一样的)
    //原理是每一个成员方法都会有一个隐藏的参数,该类型的形参(引用变量)-->this [所有操作对用户是透明的，不需要用户传参，编译器自动完成]
    //eg：public void setDate(Data this, int year,int month,int day) {}  //真正的形参列表应该是这样的
    //Java中,可以通过this访问当前对象的成员属性(成员变量),但静态的成员变量不支持
    public void setDate(int year,int month,int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }

    public void printData() {
        System.out.println("年：" + this.year + " 月：" + this.month + " 日：" + this.day);
    }

    public static void main(String[] args) {
        Data data = new Data();
        data.setDate(2025,9,9);
        data.printData();
    }
}
